<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        (function(){
            function queryData(type,url) {
                //形参回调函数1是正确处理函数，2是错误处理函数
                var p = new Promise(function(resolve,reject){
                    let xml = new XMLHttpRequest();
                    xml.open(type,url);
                    xml.send();
                    xml.onreadystatechange = function() {
                        if(xml.readyState != 4) return;
                        if(xml.readyState == 4 && xml.status == 200) {
                            resolve(xml.responseText);
                        }else {
                            reject('服务器异常！');
                        }
                    }
                })
                return p;
            }
            queryData('get','http://127.0.0.1:8080/')
                //.then方法是promise的原型对象方法，参数为2个回调函数，第一个相当于就是实例中的resolve(形参，可修改)回调函数，第二个相当于就是reject(形参，可修改)回调函数，then中的回调函数形参可用于接收resolve和reject的值
                .then(function(res){            
                    console.log(res);
                    return queryData('get','http://127.0.0.1:8080/post')
                },function(){
                    console.log('我是reject的错误处理函数');
                    return false;
                })
                .then(function(data){       //then方法中只写一个函数，则是表示正确处理函数
                    console.log(data);
                    return queryData('get','http://127.0.0.1:8080/cate')
                })
                .then(function(val) {
                    console.log(val);
                    
                })
        })();
    </script>
</body>
</html>